﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

namespace RzCorportativo.Views.Administrativo
{
    [Lib.Permissao(HasValidation = true)]
    public partial class Coordenador : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack)
                return;
            if (this.Request.QueryString["id"] != null)
            {
                var login = Lib.Login.Listar(new Lib.Login() { LoginId = EFramework.Web.TypeExtension.IntExtension.Parse(this.Request.QueryString["id"], 0) }).FirstOrDefault();
                if (login != null)
                {
                    Title = login.Usuario.Nome;
                    Login.LoadModel(login, enable: false);
                    usuario.LoadModel(login.Usuario, true);
                }
            }
        }

        protected void salvar_Click(object sender, EventArgs e)
        {
            RzCorportativo.Lib.Usuario usuario = new RzCorportativo.Lib.Usuario();
            usuario = this.usuario.Model;
            Alert alert = new Alert("erroGeral", this);
            try
            {
                var erroslogin = this.Login.GetErros();
                int i = 0;
                if (erroslogin.Count > 0)
                {
                    alert.AlertType = AlertType.Error;
                    foreach (var item in erroslogin)
                    {
                        alert.Add(i.ToString(), item);
                        i += 1;
                    }
                    return;
                }
                if (!this.usuario.IsValid)
                {
                    var msgs = this.usuario.GetErrors();
                    alert.AlertType = AlertType.Error;
                    foreach (var item in msgs)
                    {
                        alert.Add(i.ToString(), item);
                        i += 1;
                    }
                    return;
                }
                bool result = false;
                usuario.Login = this.Login.Model;
                usuario.Login.TipoLogin = Lib.TipoLogin.Interno;
                usuario.Login.Status = true;
                if (usuario.IsNew)
                {
                    result = usuario.Login.Salvar();
                    if (!result)
                    {
                        alert.Add("erroLogin", "Falha ao cadastrar o login");
                        alert.AlertType = AlertType.Error;
                        alert.Show();
                        return;
                    }
                    usuario.LoginId = usuario.Login.LoginId;
                    result = usuario.Salvar();
                    if (!result)
                    {
                        alert.Add("erroLogin", "Falha ao cadastrar o usuário");
                        alert.AlertType = AlertType.Error;
                        alert.Show();
                        return;
                    }
                }
                else
                    result = usuario.Salvar();
                if (result)
                {
                    this.Response.Redirect(this.ResolveUrl("~/Views/Administrativo/Coordenadores.aspx?op=ccs"));
                }
            }
            catch (Exception ex)
            {
                alert.AlertType = AlertType.Error;
                alert.Add("exception", ex.Message);
            }
            finally
            {
                if (alert.HasMessage)
                {
                    alert.Show();
                }
            }
        }

        [WebMethod]
        public static List<Lib.Grupo> ListarGrupo(string termo)
        {
            var grupos = Lib.Grupo.Listar(new Lib.Grupo() { Descricao = termo, Ativo = true });
            return grupos;
        }
    }
}